8세대 Graviton EC2부터 VPC 대역폭의 설정이 가능하게 되었습니다
안녕하세요 클래스메소드의 이수재입니다.
작년 12월 13일의 업데이트로 8세대 Graviton EC2부터 VPC의 대역폭을 변경할 수 있게 되었습니다.
벌써 한달이 지난 업데이트이기 때문에 조금 늦은 감이 없잖아 있지만 혹시 8세대로의 변경을 검토하는 분이 있을 것 같아 글을 작성해보았습니다.
무엇이 바뀌었는가
AWS는 8세대 Graviton 기반 인스턴스용 인스턴스 대역폭 구성(IBC)의 정식 출시를 발표했습니다. 고객은 IBC를 통해 EC2 인스턴스의 VPC 및 EBS 서비스 대역폭을 최대 25%까지 조정할 수 있습니다. 서비스 중 하나(예: VPC)의 대역폭을 늘리면 다른 서비스인 EBS의 사용 가능한 대역폭이 줄어듭니다. IBC는 인스턴스 버스트 대역폭, 초당 패킷 수 또는 IOPS 기능을 늘리지는 않습니다.
공식 발표의 내용대로 8세대 Graviton 기반 인스턴스에서 인스턴스 대역폭 구성(instance bandwidth weighting configuration)이 가능하게 되었습니다.
25년 1월 24일 기준 지원하는 타입은 다음과 같습니다.
- C8g(모든 사이즈)
- M8g(모든 사이즈)
- R8g(모든 사이즈)
- X8g(모든 사이즈)
무엇이 가능한가?
지금까지는 정적으로 설정된 네트워크와 EBS의 대역폭을 어느 한 쪽에 가중치를 주어서 워크로드에 알맞게 대역폭을 설정할 수 있게 되었습니다.
다만 이 설정에 대해 주의할 점으로는 다음과 같습니다.
- 대역폭에만 영향을 주며 PPS(초당 패킷 수)나 IOPS(초당 입출력 수)에는 영향을 주지 않습니다.
- 네트워킹과 EBS 간의 대역폭 총합은 변경되지 않습니다. 한 쪽의 대역폭을 늘리면 한 쪽은 줄어드는 식입니다.
- 워크로드와 I/O 사이즈(파일의 크기)와 IOPS를 고려하여 적절한 대역폭을 설정하는 것을 권장합니다.
- 인터넷 게이트웨이 또는 로컬 게이트웨이를 통과하는 트래픽에 대한 네트워크 다중 흐름 대역폭의 사양은 설정한 기본 대역폭의 50% 또는 5Gbps로 조정됩니다.
- 설정하는 것으로 인해 추가 비용이 발생하지는 않습니다.
주의 사항
주의할 점 중에서 몇 가지 내용에 대해 조금 상세히 해석하면 다음과 같습니다.
네트워킹과 EBS 간의 대역폭 총합은 변경되지 않습니다. 한 쪽의 대역폭을 늘리면 한 쪽은 줄어드는 식입니다.
대역폭 설정을 변경할 때 선택할 수 있는 값은 기본값, ebs-1, vpc-1 밖에 없습니다.
상세한 대역폭 설정은 불가능하며 ebs와 vpc 중 어디에 가중치를 줄 것 인지만 선택이 가능합니다.
VPC 대역폭과 EBS 대역폭 중 어디가 큰 것이 좋은지는 워크로드와 관련되어 있습니다.
우선 VPC 대역폭이 EBS 대역폭보다 큰 경우(네트워크에서 데이터를 전송하는 속도 > EBS 스토리지와 통신하는 속도)인 경우에는 외부 인터넷이나 VPC 간 통신을 많이 사용하는 경우 네트워크 트래픽이 빠르게 처리됩니다.
만약 네트워크의 대역폭이 부족해서 병목 현상이 발생하는 워크로드의 경우 해결책이 될 수 있습니다.
예로 들면 대규모 데이터 스트리밍 서비스나 대규모 웹 트래픽 처리에 유리합니다.
또한 대역폭이 충분하므로 다중 API 요청 처리 및 클라이언트 연결 등 다중 네트워크 작업을 효율적으로 처리할 수 있습니다.
다만 EBS의 대역폭이 낮기 때문에 EBS에서 데이터를 읽거나 쓰는 작업에서 병목 현상이 발생할 수 있습니다. 따라서 데이터 베이스와 같은 디스크 I/O 중심의 워크로드에서는 EBS의 대역폭에 우선순위를 두는 것이 좋습니다.
EBS 대역폭이 VPC 대역폭보다 큰 경우는 위의 설명을 반대로 이해하면 됩니다.
디스크 중심의 작업이 최적화 될 수 있으며, VPC와의 통신이 적고 EC2와 EBS 간 통신이 대부분인(= 내부 중심 네트워크가 주인) 워크로드에 적합합니다.
반대로 네트워크 통신이 많아지는 경우 네트워크 작업에서 병목 현상이 발생할 가능성이 있습니다.
인스턴스의 사이즈에 따라 대역폭의 기본값과 버스트값(baseline, burst)가 달라집니다.
상세한 값은 아래 공식 문서를 참고해주세요.
워크로드와 I/O 사이즈(파일의 크기)와 IOPS를 고려하여 적절한 대역폭을 설정하는 것을 권장합니다.
큰 데이터 일수록 대역폭이 더 중요합니다.
예로 들면 한 번의 I/O 크기가 256KB이고 초당 100,000 IOPS를 처리하려면 약 24GB/s(256KB × 100,000)의 데이터 처리량이 발생하므로 이에 걸맞는 대역폭이 필요합니다.
이 경우, 대역폭 제한에 먼저 도달해 IOPS 성능이 떨어질 수 있습니다.
작은 데이터(I/O 크기)일수록 IOPS가 더 중요합니다.
I/O 크기가 4KB라면, 100,000 IOPS를 처리하는 데 필요한 대역폭은 약 400MB/s(4KB × 100,000)로 비교적 작습니다.
이 경우 대역폭보다 IOPS가 성능의 주요 제한 요소입니다.
따라서 워크로드에서 처리하는 데이터의 사이즈에 따라서 대역폭을 설정하는 것이 올바른지, 그렇다면 어느 한쪽에 가중치를 주는 것으로 해결할 수 있는지? 아니면 인스턴스 타입의 변경이 필요한지? 등을 검토하는 것이 좋습니다.
설정 방법
설정은 AWS 콘솔이나 AWS CLI에서 가능합니다.
EC2를 생성할 때 설정하는 경우 고급 세부 정보에서 설정이 가능합니다.
생성한 EC2의 옵션 변경이 필요한 경우, 콘솔에서 변경한다면 우선 대상 EC2를 중지(stop)합니다.
그리고 [작업] > [네트워크] > [Manage bandwidth]를 선택합니다.
이후 대역폭 가중치를 설정할 곳을 선택한 후 저장합니다.
CLI로 설정하는 경우는 아래 공식 문서를 참고해주세요.
마무리
워크로드에 따라 대역폭의 가중치를 설정하여 원할한 운영이 가능해지는 것은 좋은 기능이라고 생각합니다.
이로서 8세대 Graviton 패밀리를 선택할 때의 장점이 추가된 것 같네요.
긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.